Amazon SNSでSMS送信の使用制限に抵触したので上限を引き上げてみた
こんにちは、CX事業本部 IoT事業部の若槻です。
今回は、Amazon SNSでSMS送信の使用制限に抵触したので上限を引き上げてみました。
トピックでイベントを発行しても、サブスクリプションのSMSにメッセージが届かない
最近案件でSMS送信を扱う機会があり、SNSトピックにSMSのサブスクリプションを登録してメッセージ送信を行う検証をしていました。
- Amazon SNSでメッセージフィルタリングポリシーに合致したサブスクリプションにのみSMSを送信する | DevelopersIO
- AWS LambdaとAmazon SNSで引数に指定した電話番号にSMSを送信する仕組みを作ってみた(AWS CDK) | DevelopersIO
最初は問題なく動作していたのですが、途中からイベント発行をしてもSMSのメッセージ送信が行われなくなる事象が発生しました。
- 最初の十数通程度は問題なくSMS送信できていた
- 同じAWSアカウントに作成し直したSNSトピックでも同じ事象が発生する
- Emailなどのサブスクリプションであれば同じトピックでもメッセージが届く
- 他のAWSアカウントに作成すれば同じ番号のSMSのサブスクリプションであってもメッセージが届く
原因調査
まず疑ったのはAmazon SNSのクォータ(使用制限)に抵触したことです。ドキュメントには下記のような記載がありました。
毎月の SMS メッセージングの使用制限に達すると、Amazon SNS で「アカウントのクォータが残っていません」というエラーが表示されます。
しかしメッセージ発行時(マネジメントコンソール)にエラーなどは特に表示されませんでした。
一方下記のドキュメントを見ると、AWSアカウントごとにSMSの使用料は1.00USD
とのことです。
SMS のアカウント使用料しきい値 | アカウントあたり 1.00 USD
そこで請求ダッシュボードを見てみると「Amazon Simple Notification Service APN1-SMS-Price-ROW」が0.969USD
となっており、SMSの使用制限にほぼ抵触していました。
AWSでのSMS利用料金
AWSでのSMSの料金は、日本国内の場合は下記のようになります。1通あたり$0.07451と思ったより高い印象です。
TransactionalとPromotionalの用途ごとに料金があるのが面白いですね。
使用制限(の最大値)引き上げの申請
SMS送信の使用制限の引き上げはAWSのサポートセンターから起票して行います。制限タイプでSNS Text Messaging
を選択し、その他情報をオプションとして指定します。
起票から数時間後にAWSから下記のメールが届きました。SMSの月額使用限度額が無事20USDに引き上げられたとのこと。
平素は Amazon Web Services をご利用いただき、誠にありがとうございます。 アジアパシフィック (東京) リージョンにおいて、新しいSMSの月額使用限度額$20USDが適用されました。 ***注意事項*** メッセージを送信する前に、Amazon SNS コンソール または API を使用してアカウントの使用限度額を更新する必要があります。この処理がコンソールに反映されるまでに最大 1 時間かかる場合があります (https://docs.aws.amazon.com/ja_jp/sns/latest/dg/sms_preferences.html)。
そしてメールを見て気がついたののですが、申請を受けてAWSサポートが行ったのは月額使用限度額の「最大値」の引き上げだったようです。よって更にユーザーによる使用限度額の引き上げ設定操作が必要のようです。
使用限度額の引き上げ設定
Amazon SNSのマネジメントコンソールで[Mobile]-[テキストメッセージング(SMS)]で[テキストメッセージングの優先設定]の[編集]をクリックします。
[デフォルトのメッセージタイプ]でトランザクション
(またはプロモーション
)を選択、[アカウントの使用制限]で20
USD/月を指定して、[変更の保存]をクリックします。
トピックでメッセージを発行するとSMSでメッセージを受信できるようになりました。
配信統計にもSMSの配信の成功が記録されています。
まとめ
- Amazon SNSのデフォルトのSMS月額送信限度額は$1.00。
- AWSでのSMS1通あたりの送信料金は$0.07451(日本国内)。デフォルトで13通まで送信可能
- 送信限度額の最大値を引き上げるためにはAWSのサポートセンターへの申請が必要。
- 送信限度額の最大値が引き上げられた後に、ユーザー自身でアカウントの送信限度額の引き上げ操作が必要。
参考
以上